#define _CRT_SECURE_NO_WARNINGS 1
#include "Date.h"

//class A
//{
//public:
//	A(int a)
//		:_a(a)
//	{
//
//	}
//
//private:
//	int _a;
//};
//
//namespace liusong
//{
//	class Date
//	{
//	public:
//		Date(int year, int month, int day)
//			:_ref(year)
//			,_n(20)
//			,_year(2)
//			,_aa(30)
//		{
//			_year = year;
//			_month = month;
//			_day = day;
//		}
//	private:
//		int _year =1;//ȱʡֵ
//		int _month =1;
//		int _day =1;
//		int& _ref;
//		const int _n;
//		A _aa;
//	};
//}
//
//class A
//{
//public:
//	A(int a)
//		:_a1(a)
//		, _a2(_a1)
//	{}
//
//	void Print() {
//		cout << _a1 << " " << _a2 << endl;
//	}
//private:
//	int _a2;
//	int _a1;
//};
//
//
//int main() {
//	A aa(1);
//	aa.Print();
//}




//int main()
//{
//	liusong::Date d1();
//
//}



//class A
//{
//public:
//	A()
//	{
//		++count;
//	}
//	A(const A& aa)
//	{
//		++count;
//	}
//	~A()
//	{
//
//	}
//	//静态成员函数，特点：没有this指针
//	static int GetCount()
//	{
//		return count;
//	}
//private:
//	//声明
//	static int count;
//		int _a = 1;
//};
//
////定义
//int A::count = 0;
//
//
//
//
//A func()
//{
//	A aa;
//	return aa;
//}
//int main()
//{
//	func();
//	func();
//	func();
//	//cout << aa.GetCount()-1 << endl;
//	////匿名对象A(),生命周期只在这一行
//	//cout << A().GetCount() - 1 << endl;
//	cout << A::GetCount() << endl;
//
//}


//class Date
//{
//    friend class A;
//public:
//   /* explicit Date(int year)
//        :_year(year)
//    {
//
//    }*/
//    explicit Date(int year, int month = 1, int day = 1)
//        : _year(year)
//        , _month(month)
//        , _day(day)
//    {}
//private:
//    int _year;
//    int _month;
//    int _day;
//    
//};
//int main()
//{
//    Date d1(2023, 11, 4);
//    Date d2 = 4;
//}
 

class A
{
public:
    //A和B的关系： B就是一个普通类，只是受A的 类域和访问限定符 的限制
    class B     //B天生是A的友元
    {
    private:
        int _b;
    };
private:
    int _a;
};
int main()
{
    A a;
    A::B b;  //B创建对象
}

//求1 + 2 + 3 + ... + n，要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句（A ? B : C）
//class Sum
//{
//public:
//    Sum()
//    {
//        _ret += _i;
//        _i++;
//    }
//    static int GetRet()
//    {
//        return _ret;
//    }
//private:
//    static int _i;
//    static int _ret;
//
//};
//int Sum::_i = 1;
//int Sum::_ret = 0;
//
//
//class Solution {
//public:
//    int Sum_Solution(int n)
//    {
//        Sum arr[n];
//        return Sum::GetRet();
//    }
//};
class Solution
{
    class Sum
    {
    public:
        Sum()
        {
            _ret += _i;
            _i++;
        }
    };
public:
    int Sum_Solution(int n)
    {
        Sum arr[n];
        return _ret;
    }
private:
    static int _i;
    static int _ret;
};
int Solution::_i = 1;
int Solution::_ret = 0;

















//int main()
//{
//	//Date d1(2023, 10, 25);
//	//Date d2;
//	///*Date d3;
//	//d1 = d2;
//	//d3 = d1 = d2;*/
//
//	/*Date d2 = d1 + 50;
//	d1.Print();
//	d2.Print();*/
//	/*Date d2 = ++d1;
//	Date d3 = d1++;
//	d1.Print();
//	d2.Print();
//	d3.Print();*/
//	Date d1(2023, 10, 25);
//	Date d2 = d1+100;
//	cout << d1 << d2 << endl;
//
//
//
//}


